package org.activiti.designer.eclipse.ui.wizard.diagram; import org.activiti.designer.eclipse.common.ActivitiPlugin; import org.activiti.designer.eclipse.common.PluginImage; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; import org.eclipse.ui.forms.widgets.FormToolkit; public class CreateDefaultActivitiDiagramInitialContentPage extends WizardPage { public static final String PAGE_NAME = "createDefaultActivitiDiagramInitialContentPage"; public Button contentSourceNone; public Button contentSourceImport; public Button contentSourceTemplate; public Table templateTable; public CreateDefaultActivitiDiagramInitialContentPage() { super(PAGE_NAME); setTitle("New Activiti Diagram"); setImageDescriptor(ActivitiPlugin.getImageDescriptor(PluginImage.ACTIVITI_LOGO_64x64)); setDescription("Select the initial content for the new diagram."); } @Override public void createControl(Composite parent) { FormToolkit toolkit = new FormToolkit(parent.getDisplay()); toolkit.setBackground(parent.getBackground()); Composite container = toolkit.createComposite(parent, SWT.NULL); GridLayout layout = new GridLayout(); container.setLayout(layout); layout.numColumns = 1; GridData data = null; Group contentSourceGroup = new Group(container, SWT.SHADOW_IN); contentSourceGroup.setText("Do you want to add content to your diagram to start editing?"); data = new GridData(); data.grabExcessHorizontalSpace = true; data.horizontalAlignment = SWT.FILL; contentSourceGroup.setLayoutData(data); contentSourceGroup.setLayout(new RowLayout(SWT.VERTICAL)); contentSourceNone = toolkit.createButton(contentSourceGroup, "No, just create an empty diagram", SWT.RADIO); contentSourceNone.setSelection(true); contentSourceImport = toolkit.createButton(contentSourceGroup, "Yes, import a BPMN 2.0 file", SWT.RADIO); contentSourceImport.setEnabled(false); contentSourceTemplate = toolkit.createButton(contentSourceGroup, "Yes, use a template", SWT.RADIO); contentSourceTemplate.setEnabled(true); Group templateGroup = new Group(container, SWT.SHADOW_IN); templateGroup.setText("Choose template"); data = new GridData(); data.grabExcessHorizontalSpace = true; data.horizontalAlignment = SWT.FILL; templateGroup.setLayoutData(data); templateGroup.setLayout(new RowLayout(SWT.VERTICAL)); templateTable = toolkit.createTable(templateGroup, SWT.BORDER); for (String description : TemplateInfo.templateDescriptions) { TableItem tableItem = new TableItem(templateTable, SWT.NONE); tableItem.setText(description); } templateTable.setEnabled(false); templateTable.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE)); contentSourceNone.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent event) { templateTable.setEnabled(false); } @Override public void widgetDefaultSelected(SelectionEvent event) { } }); contentSourceTemplate.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent event) { templateTable.setEnabled(true); } @Override public void widgetDefaultSelected(SelectionEvent event) { } }); setControl(container); setPageComplete(false); } /** * Gets the information for the initial content. */ public InitialContentInfo getInitialContentInfo() { // Only one option enabled at the moment return new InitialContentInfo(InitialContentType.NONE, null); } public static class InitialContentInfo { private final InitialContentType initialContentType; private final Object contentDefinition; public InitialContentInfo(InitialContentType initialContentType, Object contentDefinition) { super(); this.initialContentType = initialContentType; this.contentDefinition = contentDefinition; } public InitialContentType getInitialContentType() { return initialContentType; } public Object getContentDefinition() { return contentDefinition; } } public static enum InitialContentType { NONE, IMPORT, TEMPLATE; } }